package cn.tedu.oop2;

/**
 * @author: Dsi
 * @date: 2021/11/9 16:17
 * @description:该类用于测试多态成员的使用情况
 */
public class TestDemo02 {
    public static void main(String[] args) {
        Dog2 d=new Dog2();
        System.out.println(d.sum);//20
        d.eat();//dog不吃香菜~
        /*1.父类引用变量指向子类对象*/
        /*2.编译（保存）看左边（父类），运行（效果）看右边（子类）*/
        Animal2 a1=new Dog2();
        /*3.多态中，成员变量使用的是父类的*/
        System.out.println(a1.sum);//10
        /*4.多态中，方法声明使用的是父类的，方法体使用的子类的*/
        a1.eat();
        /*多态中，静态方法调用的是父类的，对象在父类，所以使用的是父类的静态资源*/
        a1.play();
    }
}
class Animal2{
    int sum=10;
    public void eat(){
        System.out.println("animal吃撒都行~");
    }
    public static void play(){
        System.out.println("animal的静态方法");
    }
}
class Dog2 extends Animal2{
    int sum=20;
    @Override
    public void eat() {
        System.out.println("dog不吃香菜~");
    }
    /*这不是一个重写的方法，恰巧在两个类中出现名一样的静态方法
    静态方法属于静态资源，只有一份，不存在重写的现象
    在哪个类中定义，就作为哪个类的资源使用
     */
    public static void play(){
        System.out.println("dog的静态方法");
    }
}